package com.br.negocio.web.backbean;

import java.io.Serializable;

import javax.annotation.Resource;
import javax.faces.application.FacesMessage;
import javax.faces.component.UIParameter;
import javax.faces.context.FacesContext;
import javax.faces.event.ActionEvent;

import org.springframework.context.annotation.Scope;
import org.springframework.stereotype.Controller;

import com.br.negocio.controller.ControllerMarca;
import com.br.negocio.vo.MarcaVO;
import com.br.negocio.web.formbean.MarcaFormBean;

@Controller("marcaBackBean")
@Scope("session")
public class MarcaBackBean implements Serializable {

	private static final long serialVersionUID = 1L;
	
	@Resource
	private ControllerMarca controllerMarca;
	
	private MarcaFormBean marcaFormBean;

	public MarcaBackBean() {
		super();
		this.marcaFormBean = new MarcaFormBean();
	}

	public MarcaFormBean getMarcaFormBean() {
		return this.marcaFormBean;
	}

	public void setMarcaFormBean(MarcaFormBean marcaFormBean) {
		this.marcaFormBean = marcaFormBean;
	}
	
	// M�TODOS

	public void obterListaMarca() {
		FacesContext context = FacesContext.getCurrentInstance();
		
		try {
			this.marcaFormBean.setListaMarca(this.controllerMarca.obterListaMarca());
		} catch (Exception e) {
			context.addMessage(null, new FacesMessage("Erro ao obter a lista de marca: " + e.getMessage()));
		}
	}
	
	
	public void manterMarca() {
		FacesContext context = FacesContext.getCurrentInstance();
		
		try {
			this.controllerMarca.atualizarMarca(this.marcaFormBean.getMarcaManter());
			this.marcaFormBean.setIsDisabled(true);
			context.addMessage(null, new FacesMessage("Sucesso: Inser��o realizada com sucesso!"));
		} catch (Exception e) {
			context.addMessage(null , new FacesMessage("Erro ao manter o marca: " + e.getMessage()));
		}
		
	}
	
	public void excluirMarca() {
		FacesContext context = FacesContext.getCurrentInstance();
		
		try {
			if (!this.marcaFormBean.getListaMarca().isEmpty()) {
					this.marcaFormBean.setListaMarca(this.controllerMarca.obterListaMarca());
				}
				this.marcaFormBean.setMarcaManter(new MarcaVO());
				context.addMessage(null, new FacesMessage("Sucesso: Marca exclu�do com sucesso!"));
		} catch (Exception e) {
			context.addMessage(null, new FacesMessage("Erro ao excluir o marca: " + e.getMessage()));
		}
	}
	
	// LISTENERS
	
	public void listenerIrInserirMarca(ActionEvent evento) {
		this.marcaFormBean.setMarcaManter(new MarcaVO());
		this.marcaFormBean.setIsDisabled(false);
		this.marcaFormBean.setHead("Cadastrar Marca");
	}
	
	public void listenerIrExcluirMarca(ActionEvent evento) {
		UIParameter comp = (UIParameter) evento.getComponent().findComponent("codigoMarcaExcluir");
		int codigo = Integer.valueOf((Integer)comp.getValue());
		
		if (codigo != 0) {
			MarcaVO marcaVO = new MarcaVO();
			marcaVO.setCodigo(codigo);
			this.marcaFormBean.setMarcaManter(this.controllerMarca.obterMarca(marcaVO));
		}
		this.marcaFormBean.setHead("Excluir Marca");
		this.marcaFormBean.setIsDisabled(true);
	}
	
	public void listenerIrEditarMarca(ActionEvent evento) {
		UIParameter comp = (UIParameter) evento.getComponent().findComponent("codigoMarcaEditar");
		int codigo = Integer.valueOf((Integer)comp.getValue());
		
		if (codigo != 0) {
			MarcaVO marcaVO = new MarcaVO();
			marcaVO.setCodigo(codigo);
			this.marcaFormBean.setMarcaManter(this.controllerMarca.obterMarca(marcaVO));
		}
		this.marcaFormBean.setHead("Editar Marca");
		this.marcaFormBean.setIsDisabled(false);
	}
}
